package config

import "mytinydb/utils"

type DbConfig struct {
	Addr             string `json:"addr" toml:"addr"`                     //服务器地址
	Port             int    `json:"port" toml:"port"`                     // 服务器端口
	DirPath          string `json:"dir_path" toml:"dir_path"`             //数据库数据存储目录
	BlockSize        int64  `json:"block_size" toml:"block_size"`         //每个数据块文件的大小
	FileRWMethod     int    `json:"file_rw_method" toml:"file_rw_method"` //数据读写模式
	IdxMode          int    `json:"idx_mode" toml:"idx_mode"`             //数据索引模式
	MaxKeySize       uint64 `json:"max_key_size" toml:"max_key_size"`
	MaxValueSize     uint64 `json:"max_value_size" toml:"max_value_size"`
	Sync             bool   `json:"sync" toml:"sync"`                           //每次写数据是否持久化
	ReclaimThreshold int    `json:"reclaim_threshold" toml:"reclaim_threshold"` //回收磁盘空间的阈值
}

// DefaultConfig 获取默认配置
func DefaultConfig() DbConfig {
	return DbConfig{
		Addr:             utils.Addr,
		Port:             utils.Port,
		DirPath:          utils.DirPath,
		BlockSize:        utils.BlockSize,
		FileRWMethod:     utils.FileRWMethod,
		IdxMode:          utils.IdxMode,
		MaxKeySize:       utils.MaxKeySize,
		MaxValueSize:     utils.MaxValueSize,
		Sync:             utils.Sync,
		ReclaimThreshold: utils.ReclaimThreshold,
	}
}
